﻿using System.Collections.Generic;
using System.Threading.Tasks;
using SocialApi.Instagram.Entities.Methods.Users;

namespace SocialApi.Instagram.Entities.Methods.Likes
{
    /// <summary>
    /// Содержит информацию о "лайках"
    /// </summary>
    public interface ILikeMethods
    {
        /// <summary>
        /// Получение спсика всех лайков текущей медиа
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        IEnumerable<IUserMethods> Get(long mediaId);

        /// <summary>
        /// Добавление нового лайка в текущую медиа
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        void Post(long mediaId);

        /// <summary>
        /// Удаление лайка в текущей медиа 
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        void Delete(long mediaId);

        /// <summary>
        /// Асинхроное получение спсика всех лайков текущей медиа
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        Task<IEnumerable<IUserMethods>> GetAsync(long mediaId);

        /// <summary>
        /// Асинхроное добавление нового лайка в текущую медиа
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        Task PostAsync(long mediaId);

        /// <summary>
        /// Асинхроное удаление лайка в текущей медиа 
        /// </summary>
        /// <param name="mediaId">Id текущей медиа</param>
        Task DeleteAsync(long mediaId);
    }
}